package br.com.rrf;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class ProdutoParser {

	public static List<Produto> receberProduto() throws Exception{
		
		URL url = new URL("https://dl.dropboxusercontent.com/s/3l9bte39j6bae27/cardapio.json?dl=1&token_hash=AAEN7_pnL3pTCpzvE9341ZsJP3BB1oTppOJe1d4TKEJkSQ");
		HttpURLConnection conexao = (HttpURLConnection)url.openConnection();
		conexao.setRequestMethod("GET");
		conexao.setReadTimeout(10000);
		conexao.setConnectTimeout(15000);
		conexao.setDoInput(true);
		
		conexao.connect();
		if (conexao.getResponseCode() == 200){ // HTTP_OK
			return parseProdutoJson(conexao.getInputStream());
		}
		return null;
	}

	private static  List<Produto> parseProdutoJson(InputStream inputStream) 
			throws JSONException, Exception {
		
		List<Produto> produto = new ArrayList<Produto>();
		
		JSONObject json = new JSONObject(streamToString(inputStream));
		JSONArray jsonPosts = json.getJSONArray("cardapio");
		for (int i = 0; i < jsonPosts.length(); i++) {
			JSONObject jsonPost = jsonPosts.getJSONObject(i);
			long id			= jsonPost.getLong("id");
			String nome     = jsonPost.getString("nome");
			double preco       = jsonPost.getDouble("preco");
			Produto prod = new Produto(id,nome,preco);
			produto.add(prod);
		}
		return produto;
	}
	
	private static String streamToString(InputStream inputStream) throws Exception {
		BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
		
		StringBuilder sBuffer = new StringBuilder();
		
		String line = null;
		while ((line = reader.readLine()) != null) {
			sBuffer.append(line);
		}
		inputStream.close();
		return sBuffer.toString();
	}
}
